package com.by.zhdoctor.huanxin.api;

import io.swagger.client.ApiResponse;
import io.swagger.client.model.NewPassword;
import io.swagger.client.model.RegisterUsers;
import io.swagger.client.model.UserNames;

/**
 * Created by succy on 17-9-3.
 */
public interface IMUserApi {
    /**
     * 创建单个IM用户
     *
     * @param payload 用户信息：{"username":"${用户名}","password":"${密码}", "nickname":"${昵称值}"}
     * @return
     */
    ApiResponse<?> createIMUserSingle(RegisterUsers payload);

    /**
     * 根据用户名或者用户ID获取IM用户信息
     *
     * @param username 用户名或者用户ID
     * @return
     */
    ApiResponse<?> getUserByUserName(String username);

    /**
     * 重置IM用户密码
     *
     * @param username    用戶名或用戶ID
     * @param newPassword <code>{"newpassword" : "${新密码指定的字符串}"}</code>
     * @return
     */
    ApiResponse<?> resetUserPassword(String username, NewPassword newPassword);


    /**
     * 给IM用户添加好友
     * @param username 要添加好友的用户名
     * @param friendName 被添加的好友的用户名
     * @return
     */
    ApiResponse<?> addFriend(String username, String friendName);

    /**
     * 删除好友
     * @param username 要删除好友的用户名
     * @param friendName 被删除的好友的用户名
     * @return
     */
    ApiResponse<?> removeFriend(String username, String friendName);

    /**
     * 根据用户名或者用户ID获取IM用户的好友列表
     *
     * @param username 用户名或者用户ID
     * @return
     */
    ApiResponse<?> getFriendList(String username);

    /**
     * 根据用户名获取用户的黑名单列表
     *
     * @param username 用户名或者用户ID
     * @return
     */
    ApiResponse<?> getBlackList(String username);

    /**
     * 将指定用户添加到黑名单
     *
     * @param username  要添加黑名单的IM用户名
     * @param userNames 被添加到黑名单的用户信息,可以是数组
     * @return
     */
    ApiResponse<?> addToBlackList(String username, UserNames userNames);


    /**
     * 从IM用户的黑名单列表中移除某人
     *
     * @param username  用戶名或用戶ID
     * @param blackName 黑名单用戶名或用戶ID
     * @return
     */
    ApiResponse<?> removeFromBlackList(String username, String blackName);

    /**
     * 查看用户的状态：在线，离线等
     *
     * @param username 用户名或者用户ID
     * @return
     */
    ApiResponse<?> getUserStatus(String username);

    /**
     * 获取离线消息条数
     * @param userName 用户名或者用户ID
     * @return
     */
    ApiResponse<?> getOfflineMsgCount(String userName);
}
